package com.lemobar.pay.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.lemobar.pay.enums.LmbPayTypeEnum;
import com.lemobar.pay.model.alipay.response.AliPayTradeCreateResponse;
import com.lemobar.pay.model.alipay.response.AliPayTradePayResponse;
import com.lemobar.pay.model.wxpay.response.WxPayMicroPayCreateResponse;
import com.lemobar.pay.model.wxpay.response.WxPayUnifiedCreateResponse;
import lombok.Data;

/**
 * 支付时的同步/异步返回参数
 * {@link WxPayUnifiedCreateResponse} {@link WxPayMicroPayCreateResponse}
 * {@link AliPayTradeCreateResponse} {WAP页面} {APP 提供给APP的orderInfo} {@link AliPayTradePayResponse}
 */
@Data
public class PayResponse {

    /**
     * 业务结果
     * wx -> result_code SUCCESS/FAIL  SUCCESS=关闭成功 FAIL=关闭失败(去看errCode)   <br>
     * ali -> code 10000/其他   10000=成功  其他=失败(去看errCode) 公共错误码：https://opendocs.alipay.com/open/common/105806  + 业务错误码：...
     */
    private String resultCode;

    /**
     * 业务返回码 错误代码                   <br>
     * wx -> err_code   业务错误码   参考：https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_10&index=1#7
     * ali -> sub_code  公共错误码  参考：https://opendocs.alipay.com/open/common/105806  + 业务错误码：...
     */
    private String errCode;

    /**
     * 业务返回 错误代码描述                 <br>
     * wx -> err_code_des
     * ali -> sub_msg
     */
    private String errCodeDes;


    /**
     * 商家订单号/内部订单号
     * wx -> out_trade_no
     * ali -> out_trade_no
     */
    private String orderId;


    /**
     * 外部订单号
     * wx -> transaction_id
     * ali -> trade_no
     * epay -> orderNo 双乾支付流水
     */
    private String outOrderId;

    /**
     * 小程序、公众号appid
     * wx -> appid
     */
    private String appId;

    /**
     * 时间戳
     */
    private String timeStamp;

    /**
     * 随机字符串
     */
    private String nonceStr;

    /**
     * 数据包
     * 统一下单接口返回的 prepay_id 参数值 (”wxAPP“=“Sign=WXPay”)
     * wx|wxAPP
     */
    @JsonProperty("package")
    private String packAge;

    /**
     * 签名方式
     * wx
     */
    private String signType;

    /**
     * 签名
     * 签名类型，默认为MD5，支持HMAC-SHA256和MD5。注意此处需与统一下单的签名类型一致
     * APP 和 JSAPI/小程序 都适用
     */
    private String paySign;

    /**
     * 商户号 (wxAPP 调起支付用 )
     * wxAPP
     */
    private String partnerid;

    /**
     * 预支付交易会话ID (wxAPP 调起支付用 )
     * wxAPP
     */
    private String prepayId;

    /**
     * aliWAP 支付返回页面
     * AliPay  pc网站支付返回的body体，html 可直接嵌入网页使用
     */
    private String body;


    /**
     * aliPay 支付宝App支付返回的请求参数信息
     */
    private String orderInfo;

    /**
     * 付款码支付后 返回付款用户的标识
     * wx -> openid
     * ali -> buyer_user_id
     */
    private String openid;


    /**
     * 支付方式/支付渠道  (微信&支付宝)付款码支付用到
     */
    private LmbPayTypeEnum payTypeEnum;

    /**
     * 双乾支付用
     * epay -> channelNo    支付宝js里tradeNo值
     */
    private String channelNo;


    /* **************************【下面字段没什么用吧】************************************************************************************************** */

    /**
     * 扫码付模式二用来生成二维码
     */
    private String codeUrl;




}
